package main

import "fmt"

func main() {
	// 值类型：  改变副本值，不会改变原来的值  相当于复制了一层
	// 引用类型： 改变副本值，会改变原来的值   相当于共享一块数据 都指向同一块内存地址
	// 基本数据类型 和 数组都是值类型

	//数组  定义时定了长度
	var a = 10
	var b = a
	fmt.Println(a == b) // true

	var arr1 = [3]int{1, 0}
	var arr2 = [3]int{1}
	fmt.Println(arr1 == arr2) // true
	arr1[2] = 55
	fmt.Println(arr1, arr2)

	var arr3 = [2]int{1, 2}
	var arr4 = arr3
	arr3[1] = 10
	fmt.Println(arr3 == arr4) // false
	fmt.Println(arr3, arr4)   // [1 10] [1 2]   修改了arr3并没有去影响到arr4

	// 切片  是引用类型  定义没定义长度
	var arr5 = []int{1, 2, 3, 45}
	arr6 := arr5
	arr5[1] = 10
	fmt.Println(arr5, arr6) //1 10 3 45] [1 10 3 45]  arr6的值也被影响了， 这是因为arr6是引用了arr5的同一内存地址

}
